package com.jzo2o.foundations.service;


import com.jzo2o.foundations.model.domain.Serve;
import com.jzo2o.foundations.model.domain.ServeItem;
import com.jzo2o.foundations.model.dto.response.ServeAggregationSimpleResDTO;
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
import com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO;

import java.util.List;

/**
 * 用户端 - 门户查询接口
 */
public interface HomeService {

    /**
     * 用户端 - 获取首页服务类型及服务项
     * 根据区域id查询所有已上架的服务类型及其下属的服务项图标
     * @param regionId 区域id
     * @return 服务图标列表
     */
    List<ServeCategoryResDTO> queryServeIconCategoryByRegionIdCache(Long regionId);

    /**
     * 用户端 - 首页全部服务：服务类型列表查询
     * 查询所有存在已上架服务的服务类型
     * 根据区域id查询简略服务类型列表
     */
    List<ServeAggregationTypeSimpleResDTO> getServeTypeList(Long regionId);

    /**
     * 用户端 - 获取首页热门服务
     * @param regionId 区域id
     * @return 热门服务列表
     */
    List<ServeAggregationSimpleResDTO> queryHotServeListByRegionIdCache(Long regionId);

    /**
     * 用户端 - 获取服务详情
     * @param id 服务id
     * @return 服务详情
     */
    ServeAggregationSimpleResDTO queryServeDetail(Long id);


    /**
     * 刷新区域id相关缓存：首页图标、热门服务、服务分类
     *
     * @param regionId 区域id
     */
    void refreshRegionRelateCaches(Long regionId);


    /**
     * 根据id查询区域服务信息
     *
     * @param id 服务id
     * @return 服务
     */
    Serve queryServeByIdCache(Long id);

    /**
     * 根据id查询服务项
     *
     * @param id 服务项id
     * @return 服务项
     */
    ServeItem queryServeItemByIdCache(Long id);
}
